/**
 * 
 */
package compilador.analizadorSintactico.categoriasSintacticas;

import java.util.ArrayList;

import javax.swing.tree.DefaultMutableTreeNode;

/**
 * @author Nolberto Castellanos Rodriguez
 * @author Yurani Alejandra Salamanca Lotero
 *
 * Clase que representa los atributos de la clase
 */
public class DeclaracionAtributos {
	
//	-------------------------------------------------------------------------------------------------
//	ATRIBUTOS
//	-------------------------------------------------------------------------------------------------

	/**
	 *  Atributo que contiene la lista de atributos en una clase
	 */
	private ArrayList<Atributo> atributos;

	
//	-------------------------------------------------------------------------------------------------
//	CONSTRUCTOR
//	-------------------------------------------------------------------------------------------------

	
	/**
	 * Constructor que permite atributos
	 * @param atributos. Lista de atributos que tiene la clase
	 */
	public DeclaracionAtributos (ArrayList<Atributo> atributos)
	{
		this.atributos = atributos;
	}

//	-------------------------------------------------------------------------------------------------
//	METODOS
//	-------------------------------------------------------------------------------------------------	

	
	/**
	 * Metodo que permite agregar hojas al nodo de la clase
	 * @return el nodo de la clase con sus hojas
	 */
	public DefaultMutableTreeNode getArbolVisual()
	{
		DefaultMutableTreeNode miRaiz =  new  DefaultMutableTreeNode("Declaracion Atributos");

		for (Atributo atributo : atributos) 
			miRaiz.add(atributo.getArbolVisual());
		
		return miRaiz;
	}
	

	/**
	 * @return
	 */
	public String getJavaCode() {
		String retornable = "";
		
		if (atributos != null) 
			for (int i = 0; i < atributos.size(); i++) {
				retornable+="\t"+atributos.get(i).getJavaCode() + ";\n";
			}
			
		
		return retornable+"\n";
	}
	
//	-------------------------------------------------------------------------------------------------
//	Getters & Setters
//	-------------------------------------------------------------------------------------------------

	/**
	 * Metodo que nos retorna el valor de atributos
	 * @return  atributos. Valor retornado
	 */
	public ArrayList<Atributo> getAtributos() {
		return atributos;
	}


	/**
	 * Metodo que permite asignar el valor de atributos
	 * @param atributos. Valor a asignar atributos
	 */
	public void setAtributos(ArrayList<Atributo> atributos) {
		this.atributos = atributos;
	}
	
}